/*jshint esversion: 9 */
/**
 * 操作文件的工具 一篇文字
 */
import SparkMD5 from 'spark-md5';
export function getFileMd5(file){  //获取文件MD5
    return new Promise((resolve,reject)=>{
        const fileReader = new FileReader();
        const spark = new SparkMD5.ArrayBuffer();
        fileReader.readAsArrayBuffer(file);
        fileReader.onload = function(e){
            spark.append(e.target.result);
            let md5 = spark.end();
            resolve(md5);
        };
        fileReader.onerror = function (e) {
            reject(e);
        };
    });
}
export function createFileUrl(file) {  //创建文件路径
    if(!file) return;
    var url = null;
    if (window.createObjectURL !== undefined) { // basic
        url = window.createObjectURL(file);
    } else if (window.URL !== undefined) { // mozilla(firefox)
        url = window.URL.createObjectURL(file);
    } else if (window.webkitURL !== undefined) { // webkit or chrome
        url = window.webkitURL.createObjectURL(file);
    }
    return url;
}
/**
 * 
 * @param {*} file  文件
 * @param {*} limitType  限制文件类型  js 扩展名 MIME 描述
 * @param {*} limitSize  选择文件大小 k
 * @returns 
 */
export function fileFilter(file,limitType,limitSize){  //文件过滤
    if(!limitType && !limitSize) return true;
    const {type,size} = file;
    if(limitType && limitType.indexOf(type) === -1){  //判断文件类型
        return false;
    }
    if(limitSize && size>limitSize){  //判断文件类型
        return false;
    }
    return true;
}
/**
 * 
 * @param {*} file  文件
 * @param {*} limitType  限制文件类型  js 扩展名 MIME 描述
 * @param {*} limitSize  选择文件大小 k
 * @param object option 一些配置
 * @returns 
 */
export function fileFilter2(file,limitType,limitSize,option={}){  //文件过滤
    const { useMIME = false } = option;
    const status = {
        type:true,
        size:true,
    };
    let {type,size} = file;
    if(!useMIME){  //是否使用 MIME 描述 来判断类型
        type = '.' + getFileType(file.name);
    }
    if(!limitType){
        status.type = true;
    }else if(limitType.indexOf(type) === -1){  //判断文件类型
        status.type = false;
    }
    if(!limitSize && limitSize != 0){
        status.size = true;
    }else if(size > limitSize){  //判断文件类型
        status.size = false;
    }
    return status;
}
export function getFileType(filePath) {  //获取文件类型
    var startIndex = filePath.lastIndexOf(".");
    if (startIndex != -1) {
        return filePath.substring(startIndex + 1, filePath.length).toLowerCase();
    } else {
        return "";
    }
}